/*
 * PriorityList.h
 *
 *  Created on: 20/06/2013
 *      Author: marcio
 */

#ifndef PRIORITYLIST_H_
#define PRIORITYLIST_H_

#include <cstdio>

template<typename T>
class Comparator{
public:
	virtual int compare(T* a, T* b);
};

template<typename T>
typedef struct stl{
	T* elem;
	struct stn* next;
}StlNode;


template<typename T>
class PriorityList {
private:
	StlNode<T> root;

	Comparator<T>* comp;

public:
	PriorityList(Comparator<T>* comp);

	virtual ~PriorityList();

	T* poll();

	T* remove();

	void add(T* elem);
};

template<typename T>
PriorityList<T>::PriorityList(Comparator<T>* comp){
	root->elem = NULL;
	root->next = NULL;
	this->comp = comp;
}

template<typename T>
PriorityList<T>::~PriorityList(){

}

template<typename T>
T* PriorityList<T>::poll(){

}

template<typename T>
T* PriorityList<T>::remove(){

}

template<typename T>
void PriorityList<T>::add(T* elem){

}

#endif /* PRIORITYLIST_H_ */
